iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
佛心分享-SideProject30

用 Golang 實作 streamlit 系列 第 14

Day14 Component 實作告一段落

  • 分享至 

  • xImage
  •  

其實我們目前已經可以輕易的就做出以下的 component:

  1. 純文字類型:Title, Subtitle, Link, Divider
  2. 有一點特殊功能但其實也很好做:Download File Button
  3. 簡單輸入:Datepicker, Timepicker, Textarea … 總之是各種 HTML 原生支援的 input type。

純文字就真的單純,後端跟 Text 一樣,不需要有甚麼特殊處理,前端也只要給 Element 指定適當 (Bulma) 的樣式即可。

type titleComp struct {
	Type string `json:"type"`
	ID   string `json:"id"`
	Text string `json:"text"`
}

func newTitleComponent(text string) *titleComp {
	return &titleComp{
		Type: "title",
		ID:   text,
		Text: text,
	}
}

func Title(c *tgframe.Container, text string) {
	c.Comps = append(c.Comps, newTitleComponent(text))
}
function createTitle(comp) {
    const newTitle = document.createElement('h1')
    newTitle.innerText = comp.text
    newTitle.className = 'title'
    return newTitle
}

Download File Button 其實也不難做,只要後端給好提供檔案的 binary base64 ,在前端指定好

  • href: data:application/octet-stream;base64,{base64_body}
  • download: {filename}

Datepicker, Timepicker 這類型則是指需要指定 input attribute 就可以使用的東西。

目前 Component 的基礎機制和功能暫時告一段落,接下來,我們會做一些更整體性的變動:

  • React
  • E2E Test
  • Multipage
  • Websocket
  • Makefile? Taskfile!

上一篇
Day13 File Upload
下一篇
Day15 Typescript + React
系列文
用 Golang 實作 streamlit 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言